package com.ruoyi.system.controller;

import com.ruoyi.common.annotation.Anonymous;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.page.PageDomain;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.system.domain.Uservo;
import com.ruoyi.system.service.DeleteService;
import com.ruoyi.system.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.YearMonth;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;



@RestController
@RequestMapping("/user/assess")
public class UserController extends BaseController {

    @Autowired
    private IUserService userService;


    // PC 端
    @GetMapping("/all")
    public TableDataInfo selectUserListg( Uservo uservo){
        startPage();
        //取出 年月
        String assessDate = uservo.getAssessDate();
        // 获取当前服务器的时间
        LocalDateTime now = LocalDateTime.now(ZoneId.systemDefault());
        // 定义年月格式
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM");
        // 格式化当前时间
        String formattedDate = now.format(formatter);
//        System.out.println("当前服务器时间: " + formattedDate);
//        System.out.println("当前服务器时间: " + assessDate);
        // 将字符串转换为 YearMonth 对象以便比较
        YearMonth assessYearMonth = YearMonth.parse(assessDate, formatter);
        YearMonth currentYearMonth = YearMonth.parse(formattedDate, formatter);
        // 比较两个时间
        if (assessYearMonth.isAfter(currentYearMonth)) {
            // 当前时间大于评估时间，返回空集合
            return null;
        } else {
            // 当前时间小于等于评估时间，返回 uservos
            List<Uservo> uservos = userService.selectUserList( uservo);
            return getDataTable(uservos);
        }
    }

    // WeChat
    @RequestMapping("/wechat")
    public TableDataInfo selectUserListg01(@RequestBody  Uservo uservo){
        //取出 年月
        String assessDate = uservo.getAssessDate();
        // 获取当前服务器的时间
        LocalDateTime now = LocalDateTime.now(ZoneId.systemDefault());
        // 定义年月格式
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM");
        // 格式化当前时间
        String formattedDate = now.format(formatter);
//        System.out.println("当前服务器时间: " + formattedDate);
//        System.out.println("当前服务器时间: " + assessDate);
        // 将字符串转换为 YearMonth 对象以便比较
        YearMonth assessYearMonth = YearMonth.parse(assessDate, formatter);
        YearMonth currentYearMonth = YearMonth.parse(formattedDate, formatter);
        // 比较两个时间
        if (assessYearMonth.isAfter(currentYearMonth)) {
            // 当前时间大于评估时间，返回空集合
            return null;
        } else {
            // 当前时间小于等于评估时间，返回 uservos
            List<Uservo> uservos = userService.selectUserList( uservo);
            return getDataTable(uservos);
        }
    }



    @Autowired
    private DeleteService deleteService;

    //清除数据
    @GetMapping("/delete01")
    public Integer deleteService(){
        deleteService.deleteService();
       return 1;
    }


    @PostMapping("/selectType")
    public TableDataInfo selectType(@RequestBody  Uservo uservo){
        //取出 年月
        String assessDate = uservo.getAssessDate();
        // 获取当前服务器的时间
        LocalDateTime now = LocalDateTime.now(ZoneId.systemDefault());
        // 定义年月格式
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM");
        // 格式化当前时间
        String formattedDate = now.format(formatter);
//        System.out.println("当前服务器时间: " + formattedDate);
//        System.out.println("当前服务器时间: " + assessDate);
        // 将字符串转换为 YearMonth 对象以便比较
        YearMonth assessYearMonth = YearMonth.parse(assessDate, formatter);
        YearMonth currentYearMonth = YearMonth.parse(formattedDate, formatter);
        // 比较两个时间
        if (assessYearMonth.isAfter(currentYearMonth)) {
            // 当前时间大于评估时间，返回空集合
            return null;
        } else {
            // 当前时间小于等于评估时间，返回 uservos
            List<Uservo> uservos = userService.selectType( uservo);
            return getDataTable(uservos);
        }
    }
}
